Method, device and system for use in configuring a bathing unit controller

ABSTRACT

A controller for a bathing unit system comprising a memory unit for storing program instructions, an interface for establishing a communication link with an external memory medium and a processing unit. The controller is operative for controlling a set of bathing unit components at least in part on the basis of the program instructions stored in the memory unit. The external memory medium stores update information associated with the program instructions and relevancy information indicative of a characteristic of the update information. The processing unit is operative for detecting the presence of an external memory medium at the interface, accessing the relevancy information stored in the memory medium, processing the relevancy information and causing the program instructions to be updated on the basis of the update information.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims the benefit under 35 USC §119(e) of U.S.provisional patent application Ser. No. 60/891,657 filed Feb. 26, 2007by Christian Brochu et al. and presently pending. The contents of theabove-mentioned patent application are incorporated herein by reference.

FIELD OF THE INVENTION

The present invention relates generally to the field of bathing unitsystems, and more particularly to a method, device and system forupdating and configuring bathing unit controllers on the basis ofinformation contained on an external memory medium.

BACKGROUND OF THE INVENTION

Control systems for bathing unit systems such as spas, whirlpools, hottubs, bathtubs, therapeutic baths and swimming pools, are well known inthe art. Typically, such control systems are operative for controllingthe various functional components of the bathing unit systems, whichinclude water pumps, heating modules, filter systems, air blowers, ozonegenerators, and lighting systems, among others.

In general, bathing unit control systems include a controller to whichthe various bathing unit components are connected. This controller isoperative for controlling the power supplied from a power source to eachone of the various components. In addition, the controller is operativefor controlling the various operational settings of the differentcomponents on the basis of control logic stored at the controller or onthe basis of inputs from a user of the bathing unit system.

During the lifetime of a bathing unit system, it is possible that auser/owner may add or change bathing unit components that are used withthe bathing unit system. For example, a user/owner may wish to addmulti-media equipment such as a CD player, or a DVD player to thebathing unit system. Or alternatively, a user/owner may wish to replacean old water pump with a new, more powerful, water pump. Whenever a usermakes an addition, or changes the bathing unit components, the dataand/or program instructions within the controller may need to be updatedor re-configured, such that the controller can control the operationalsettings of the one or more new components.

Traditionally, in order to re-configure, or update the functionality ofthe bathing unit controller, the bathing unit controller would need tobe removed from the bathing unit system and sent to a manufacturer ormaintenance center, such that the updating or reconfiguring operationswould be performed at the manufacturer or maintenance center.Alternatively, the manufacturer or maintenance center would send aworker to the premises of the bathing unit controller, such that theworker could then use specialized equipment to update or configure thecontroller.

In either of the above cases, the process of updating or configuring thebathing unit controller is inconvenient and expensive for both theowner/user of the bathing unit system, and for the manufacturer ormaintenance center. In light of the above, it can be seen that there isa need in the industry for a method, system and device that is able toalleviate, at least in part, the deficiencies associated with thetraditional methods of updating and configuring a bathing unit system.

SUMMARY OF THE INVENTION

In accordance with a first broad aspect, the present invention providesa controller for a bathing unit system. The controller comprises amemory unit, an interface and a processing unit. The memory unit storesprogram instructions. The controller being operative to control a set ofbathing unit components at least in part on the basis of the programinstructions. The interface being operative for establishing acommunication link with an external memory medium. The external memorymedium stores update information associated with the programinstructions, and relevancy information indicative of a characteristicof the update information. The processing unit is in communication withthe memory unit and the interface, such that the processing unit isoperative for detecting the presence of an external memory medium at theinterface, accessing the relevancy information stored in the memorymedium, processing the relevancy information to determine whether theupdate information stored on the external memory medium should beapplied to the program instructions and upon determination that theupdate information should be applied to the program instructions,causing the program instructions to be updated on the basis of theupdate information.

In accordance with a second broad aspect, the present invention providesan apparatus suitable for use with a controller of a bathing unitsystem. The controller is operative for controlling a set of bathingunit components at least in part on the basis of program instructionsstored in an internal memory. The apparatus comprises an interface forestablishing a communication link with the bathing unit controller, anda memory component. The memory component storing update informationassociated with the program instructions and relevancy informationindicative of a characteristic of the update information. The apparatusbeing responsive to a signal from the controller for releasing over thecommunication link the relevancy information. The relevancy informationallowing the controller to determine whether to cause the programinstructions to be updated on the basis of the update information.

In accordance with a third broad aspect, the present invention providesa bathing unit system, comprising a set of bathing unit components, anexternal memory medium and a controller. The external memory mediumstores update information and relevancy information indicative of acharacteristic of the update information. The controller comprises aninternal memory unit for storing program instructions such that thecontroller can control the set of bathing unit components at least inpart on the basis of the program instructions. The controller furthercomprising an interface for establishing a communication link with theexternal memory medium and a processing unit in communication with thememory unit and the interface. The processing unit being operative fordetecting the presence of the external memory medium at the interface,accessing the relevancy information stored at the memory medium,processing the relevancy information to determine whether the updateinformation should be applied to the program instructions and upondetermination that the update information should be applied to theprogram instructions, causing the program instructions to be updated onthe basis of the update information.

In accordance with a fourth broad aspect, the present invention providesa method for updating program instructions at a controller of a bathingunit system. The controller is operative for controlling a set ofbathing unit components at least in part on the basis of the programinstructions. The method comprising establishing a communication linkbetween an external memory medium and the controller. The externalmemory medium comprising update information associated with the programinstructions and relevancy information indicative of at least onecharacteristic of the update information. The method further comprisesprocessing the relevancy information at the controller to determinewhether the update information should be applied to the programinstructions and upon determination by the controller that the updateinformation should be applied to the program instructions, causing theprogram instructions at the controller to be updated on the basis of theupdate information stored on the external memory medium.

In accordance with a fifth broad aspect, the present invention providesa method for updating program instructions at a controller of a bathingunit system. The controller is operative for controlling a set ofbathing unit components at least in part on the basis of the programinstructions. The method comprises providing an external memory mediumcomprising update information associated with the program instructionsand relevancy information indicative of a characteristic of the updateinformation. The method further comprises providing instructions forenabling a user to establish a communication link between the externalmemory medium and the controller. The controller being operative fordetecting the presence of a communication link with the external memorymedium, processing the relevancy information to determine whether theupdate information should be applied to the program instructions andupon determination that the update information should be applied to theprogram instructions, causing the program instructions to be updated onthe basis of the update information.

In accordance with a sixth broad aspect, the present invention providesa controller for a bathing unit system. The controller is suitable forcontrolling a set of bathing unit components. The controller comprises amemory unit, an interface and a processing unit. The memory unitcomprising at least a first set of program instructions and a second setof program instructions. The implementation of the first set of programinstructions being suitable for causing the controller to acquire afirst configuration, and the implementation of the second set of programinstructions being suitable for causing the controller to acquire asecond configuration. The interface is suitable for establishing acommunication link with an external memory medium that storesconfiguration information. The processing unit is in communication withthe interface, and is operative for detecting the presence of theexternal memory medium at the interface, accessing the configurationinformation stored in the external memory medium and processing theconfiguration information for causing the controller to acquire one ofthe first configuration and the second configuration based on theconfiguration information.

In accordance with a seventh broad aspect, the present inventionprovides a bathing unit system, comprising a set of bathing unitcomponents, an external memory medium storing configuration informationand a controller. The controller comprises a memory unit comprising atleast a first set of program instructions and a second set of programinstructions. The implementation of the first set of programinstructions being suitable for causing the controller to acquire afirst configuration, and the implementation of the second set of programinstructions being suitable for causing the controller to acquire asecond configuration. The controller further comprising an interface forestablishing a communication link with an external memory medium and aprocessing unit in communication with the interface. The processing unitis operative for detecting the presence of the external memory medium atthe interface, accessing the configuration information stored in theexternal memory medium and processing the configuration information forcausing the controller to acquire one of the first configuration and thesecond configuration based on the configuration information.

In accordance with a eighth broad aspect, the present invention providesan apparatus suitable for use with a controller of a bathing unitsystem. The controller comprises a memory unit that stores at least afirst set of program instructions and a second set of programinstructions. The implementation of the first set of programinstructions is suitable for causing the controller to acquire a firstconfiguration, and the implementation of the second set of programinstructions is suitable for causing the controller to acquire a secondconfiguration. The apparatus comprises an interface for establishing acommunication link with the controller of the bathing unit system and amemory component for storing configuration information. The apparatus isresponsive to a signal from the controller for releasing over thecommunication link the configuration information. The configurationinformation causes the controller to acquire one of the firstconfiguration and the second configuration based on the configurationinformation.

In accordance with a ninth broad aspect, the present invention providesa method for configuring a controller for a bathing unit system. Thecontroller comprises a memory unit that stores at least a first set ofprogram instructions and a second set of program instructions. Theimplementation of the first set of program instructions is suitable forcausing the controller to acquire a first configuration, and theimplementation of the second set of program instructions is suitable forcausing the controller to acquire a second configuration. The methodcomprising establishing a communication link between an external memorymedium that stores configuration information and processing theconfiguration information at the controller for causing the controllerto acquire one of the first configuration and the second configurationbased on the configuration information.

In accordance with a tenth broad aspect, the present invention providesa controller for a bathing unit system. The controller being suitablefor controlling a set of bathing unit components. The controllercomprising a memory unit for storing an initial set of programinstructions and an interface for establishing a communication link withan external memory medium. The external memory medium storesconfiguration information that comprises a set of program instructions.The set of program instructions is suitable for causing the controllerto acquire a certain configuration. The controller further comprising aprocessing unit in communication with the interface. The processing unitbeing operative for detecting the presence of the external memory mediumat the interface, accessing the configuration information stored in theexternal memory medium at least in part on the basis of the initialprogram instructions and processing the configuration information forcausing the controller to implement the set of program instructions forcausing the controller to acquire the certain configuration.

In accordance with a eleventh broad aspect, the present inventionprovides a bathing unit system comprising a set of bathing unitcomponents, an external memory medium for storing configurationinformation comprising a set of program instructions and a controller.The controller is suitable for controlling the set of bathing unitcomponents and comprises a memory unit for storing an initial set ofprogram instructions, an interface for establishing a communication linkwith the external memory medium and a processing unit in communicationwith the interface. The processing unit is operative for detecting thepresence of the external memory medium at the interface, accessing theconfiguration information stored in the external memory medium at leastin part on the basis of the initial program instructions and processingthe configuration information for causing the controller to implementthe set of program instructions for causing the controller to acquirethe certain configuration.

In accordance with a twelfth broad aspect, the present inventionprovides an apparatus suitable for use with a controller of a bathingunit system. The controller comprising a memory unit that stores aninitial set of program instructions. The apparatus comprises aninterface for establishing a communication link with the controller ofthe bathing unit system and a memory component for storing configurationinformation that comprises a set of program instructions. The set ofprogram instructions is suitable for causing the controller to acquire acertain configuration. The apparatus is responsive to a signal from thecontroller for releasing over the communication link the configurationinformation. The configuration information causing the controller toacquire the certain configuration.

In accordance with a thirteenth broad aspect, the present inventionprovides a method for configuring a controller for a bathing unitsystem. The controller comprises a memory unit that stores an initialset of program instructions. The method comprises establishing acommunication link between an external memory medium and the controller.The external memory medium stores configuration information thatcomprises a set of program instructions for causing the controller toacquire a certain configuration. The method further comprises processingthe configuration information at the controller for causing thecontroller to acquire the certain configuration.

In accordance with a fourteenth broad aspect, the present inventionprovides a controller for controlling a set of bathing unit componentsin a bathing unit system. The controller comprises an interface forestablishing a communication link with an external memory medium and aprocessing unit in communication with the memory unit and the interface.The processing unit is operative for detecting the presence of theexternal memory medium at the interface and upon detection of thepresence of the external memory medium at the interface, causingdiagnostic information associated with the operation of the set ofbathing unit components to be released to the external memory mediumover the communication link.

In accordance with a fifteenth broad aspect, the present inventionprovides a system for logging diagnostic information associated with thecontrol of a set of bathing unit components. The system comprises a setof bathing unit components, an external memory medium and a controllerfor controlling the set of bathing unit components. The controllercomprises an internal memory containing initial program instructions, aninterface for establishing a communication link with the external memorymedium and a processing unit in communication with the interface. Theprocessing unit is operative for detecting the presence of the externalmemory medium at the interface at least in part on the basis of theinitial program instructions, and upon detection of the presence of theexternal memory medium at the interface, causing diagnostic informationassociated with the operation of the set of bathing unit components tobe released to the external memory medium over the communication link.

In accordance with a sixteenth broad aspect, the present inventionprovides a method for providing diagnostic information associated withthe control of a set of bathing unit components in a bathing unitsystem. The method comprises establishing a communication link betweenan external memory medium and a controller and upon detection at thecontroller of the presence of the external memory medium, causingdiagnostic information associated with the operation of the set ofbathing unit components to be released to the external memory mediumover the communication link.

These and other aspects and features of the present invention will nowbecome apparent to those of ordinary skill in the art upon review of thefollowing description of specific embodiments of the invention and theaccompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

In the accompanying drawings:

FIG. 1 shows a functional block diagram of a bathing unit system inaccordance with a non-limiting example of implementation of the presentinvention;

FIG. 2 shows a physical representation of an external memory medium anda bathing unit controller in accordance with a non-limiting example ofimplementation of the present invention;

FIG. 3A shows a first non-limiting block diagram of a bathing unitcontroller and an external memory medium in accordance with a firstexample of implementation of the present invention;

FIG. 3B shows a non-limiting flow diagram of a process for configuring abathing unit controller in accordance with update information stored onan external memory medium in accordance with a non-limiting example ofimplementation of the present invention;

FIG. 4A shows a second non-limiting block diagram of a bathing unitcontroller and external memory medium in accordance with a secondexample of implementation of the present invention;

FIG. 4B shows a third non-limiting block diagram of a bathing unitcontroller and external memory medium in accordance with a third exampleof implementation of the present invention;

FIG. 4C shows a non-limiting flow diagram of a process for configuring abathing unit controller in accordance with configuration informationstored on an external memory medium in accordance with a non-limitingexample of implementation of the present invention;

FIG. 5A shows a fourth non-limiting block diagram of a bathing unitcontroller and external memory medium in accordance with a fourthexample of implementation of the present invention;

FIG. 5B shows a non limiting flow diagram of a process for providingdiagnostic information to an external memory medium in accordance with anon-limiting example of implementation of the present invention;

FIG. 6 shows a non-limiting flow diagram of a process for enabling auser/owner of a bathing unit system to configure their bathing unitsystem in accordance with a non-limiting example of implementation ofthe present invention;

FIG. 7 shows a representational diagram of a bathing unit system anddifferent external memory mediums in accordance with a non-limitingexample of implementation of the present invention;

Other aspects and features of the present invention will become apparentto those ordinarily skilled in the art upon review of the followingdescription of specific embodiments of the invention in conjunction withthe accompanying figures.

DETAILED DESCRIPTION

The description below is directed to a specific implementation of theinvention in which the invention is used in a bathing unit system. It isto be understood that the terms “bathing unit” and “bathing unitsystem”, as used for the purposes of the present description, refers tospas, whirlpools, hot tubs, bathtubs, therapeutic baths, swimming poolsand any other type of water receptacle that can be equipped with acontrol system for controlling various operational settings.

FIG. 1 illustrates a block diagram of a bathing unit system 10 inaccordance with a specific example of implementation of the presentinvention. The bathing unit system 10 includes a water receptacle 18 forholding water, a plurality of jets 20, a set of drains 22 and a controlsystem 24. In the specific embodiment shown in FIG. 1, the bathing unitsystem 10 further includes a set of bathing unit components thatincludes a heating module 30, two water pumps 11 and 13, a filter 26 andan air blower 28. It should be understood that the bathing unit system10 could include more or less bathing unit components without departingfrom the spirit of the invention. For example, although not shown inFIG. 1, the bathing unit system 10 could include an ozonator, a lightingsystem for lighting up the water in the receptacle 18, multimediadevices such as a CD/DVD player and any other suitable device.

In the non-limiting embodiment shown, the control system 24 includes acontroller 34 for controlling the set of bathing unit components 11, 13,26, 28, 30 and a control panel 32 for enabling a user to enter usercommands to the controller 34. The control panel 32 is typically in theform of a user interface that allows a user to enter commands forcausing the controller 34 to control the various operational settings ofthe bathing unit components. Some non-limiting examples of operationalsettings include temperature control settings, jet control settings, andlighting settings. In a non-limiting embodiment where the bathing unitis connected to entertainment and/or multimedia modules, the operationalsettings of the bathing unit may also include audio settings and videosettings, amongst others. Consequently, the expression “operationalsettings”, for the purpose of the present invention, is intended tocover operational settings for any suitable equipment that can beoperated by a user of the bathing unit system.

The control system 24 receives electrical power from an electric powersource 36 that is connected to the controller 34 via service wiring 31.The power source 36 supplies the controller 34 with any conventionalpower service suitable for residential or commercial use. The controller34 then controls the distribution of power supplied to the variousbathing unit components on the basis of program instructions and signalsreceived from the control panel 32 in order to cause the desiredoperational settings to be implemented.

In a non-limiting implementation, the power source 36 can supply 240volts (V) AC to the controller 34 via service wiring 31. In analternative non-limiting implementation, the power source 36 can supply120 volts (V) AC to the controller 34 via service wiring 31. In yet afurther alternative non-limiting implementation, the power source 36 cansupply 120 Volts and 240 Volts AC to the controller 34 via servicewiring 31. It is to be appreciated that other voltage supply values orvoltage supply combinations, for example depending on geographicallocation, are possible without detracting from the spirit and scope ofthe invention. In a non-limiting implementation, the service wiring 31is passed through a ground fault circuit interrupter (GFCI) that isadapted for tripping in the presence of a current leakage to the ground.The ground fault circuit interrupter (GFCI) provides an added safetymeasure to the bathing unit system.

In normal operation, water flows from the bathing unit receptacle 18,through the drains 22 and is pumped by water pump 13 through the heatingmodule 30 where the water is heated. The heated water then leaves theheating module 30 and re-enters the bathing unit receptacle 18 throughjets 20. In addition, water flows from the bathing unit receptacle 18,through different drains 22 and is pumped by water pump 11 throughfilter 26. The filtered water then re-enters the bathing unit receptacle18 through different jets 20. Water can flow through these two cyclescontinuously while the bathing unit system 10 is in operation.Optionally, water can also flow from the bathing unit receptacle 18through one or more drains 22 to an air blower 28 that is operative fordelivering air bubbles to water that re-enters the bathing unitreceptacle 18 through jets 20.

As shown in FIG. 1, the controller 34 includes a processing unit 40 anda memory unit 42 that are in communication with one another over acommunication bus. The processing unit 40 is operative for accessing andprocessing program instructions stored within the memory unit 42 forenabling the controller 34 to control the set of bathing unit components11, 13, 26, 28 and 30 at least in part on the basis of those programinstructions.

Shown in FIG. 2, is a non-limiting example of an external structure forthe controller 34 in accordance with the present invention. As shown,the controller 34 includes a housing 56 for enclosing electricalcircuitry, including the processing unit 40 and the memory unit 42 (notshown). The housing 56 further includes a plurality of bathing unitcomponent interfaces 58 for receiving corresponding connectors fromrespective ones of the bathing unit components 11, 13, 26, 28 and 30 forenabling power and control signals to be issued to the bathing unitcomponents 11, 13, 26, 28 and 30 from the controller 34. The housing 56further includes an interface 44 for establishing a communication linkwith an external memory medium 46. In the non-limiting embodiment shown,the interface 44 is a female USB connection port suitable for receivinga corresponding male USB connector from the external memory medium 46.Alternatively, the interface 44 could be any other type of physicalinterface known in the art, such as an I2C or an SPI connection portsuitable for receiving a corresponding I2C or SPI connector from theexternal memory medium 46. It should, however, be appreciated thatinstead of being a physical connection port, the interface 44 could beany other type of interface, such as an infrared port or an RFtransceiver, without departing from the spirit of the invention.

As shown in FIG. 2, the external memory medium 46 also includes aninterface 54 for enabling the external memory medium 46 to establish thecommunication link with the controller 34. In the non-limitingembodiment shown, the interface 54 is a male USB connector forconnecting with the female USB connector 44 on the controller 34. Itshould be appreciated that the interface 54 could be any other type ofinterface, such as a corresponding I2C or SPI connector, an infraredport or an RF transceiver, without departing from the spirit of theinvention. Obviously, in order for the interface 54 on the externalmemory medium 46 to establish a communication link with the interface 44on the controller 34, the two types of interfaces 44 and 54 should becompatible. Based on the above, it can be appreciated that thecommunication link between the controller 34 and the external memorymedium 46 can be either a physical wireline link, an RF link or aninfrared link.

It should also be appreciated that the interface 54 on the externalmemory medium 46 may be operative for connecting/interfacing directlywith the interface 44 on the controller 34, or alternatively may beoperative for connecting to an adapter that is, in turn, suitable forconnecting with the interface 44. In this manner, the communication linkbetween the external memory medium 46 and the controller 34 travelsthrough an adapter (not shown).

In accordance with the non-limiting example shown in FIG. 2, theexternal memory medium 46 is a portable memory key (otherwise known as amemory wand, a memory stick or a USB key). Although the memory medium 46shown in FIG. 2 is a memory key, it should be understood that theexternal memory medium 46 could be any suitable type of external memorymedium capable of storing the type of information that will be describedin more detail below. For example, the external memory medium could be ahard drive of a personal computer, a CD or DVD, a PDA, a cell phone, orany other suitable type of external memory medium.

As described above, the controller 34 is operative to establish acommunication link with an external memory medium 46 through interface44 for enabling the controller 34 to receive information from, and/ortransmit information to, the external memory medium 46. As will bedescribed in more detail below, for the purposes of the presentinvention, the external memory medium 46 can be used for one or more ofthe following purposes:

-   -   to provide update information to the controller 34 for enabling        the controller to update data and/or program instructions stored        in its memory unit 42,    -   to provide configuration information to the controller 34 for        configuring the functionality of the controller 34; and/or    -   to provide diagnostic information associated with the operation        of the controller 34 and/or set of bathing unit components 11,        13, 26, 28 and 30.

For the sake of simplicity, each of these purposes will be describedseparately below. However, it should be appreciated that a controller 34and an external memory medium 46 that is able to store all, or acombination, of the information described below, is included within thescope of the present invention.

Update Information

Shown in FIG. 3A is a non-limiting block diagram of the controller 34and an external memory medium 46 in accordance with a specificimplementation of the present invention. As shown, the controller 34includes the processing unit 40 and the memory unit 42 for storing data47 and program instructions 48. The controller 34 further includes theplurality of bathing unit component interfaces 58 for enabling thecontroller to communicate with the bathing unit components 11, 13, 26,28, 30, and the interface 44 through which the controller 34 establishesa communication link with the external memory medium 46.

During the course of operation of the bathing unit system 10, theprocessing unit 40 processes the data 47 and program instructions 48stored in the memory unit 42 in order to control the operation of theset of bathing unit components 11, 13, 26, 28, 30. Over the lifetime ofthe bathing unit system 10, it may be required and/or desirable toupdate the program instructions 48 contained in the memory unit 42.These updates may be done in order to add and/or modify thefunctionality of the controller 34, such as in the case where a bathingunit component is changed or added. For example, at some point duringthe lifetime of the bathing unit system 10, the heating module 30 may bechanged for a newer, more up-to-date heating module 30, or a new bathingunit component, such as a CD, or DVD player may be added to the bathingunit system 10.

In the past, in order to update the data 47 and/or program instructions48 contained within the controller 34, the entire controller 34 wouldneed to be sent back to the manufacturer, or supplier. Alternatively, atechnician would need to visit the premises of the bathing unit system10 to transfer updates to the program instructions 48 stored in thecontroller 34. In either of these cases, the process for updating thedata 47 and/or program instructions stored within the memory unit 42 isan expensive and inconvenient process.

In accordance with the present invention, and as shown in FIG. 3A, theexternal memory medium 46 stores relevancy information 50 and updateinformation 52 for enabling the data 47 and/or the program instructions48 in the controller 34 to be updated. The relevancy information 50stores information for identifying and characterizing the updateinformation 52. For example, the relevancy information 50 may includethe version of the update information 52, the date of the updateinformation, the data structure of the update information 52, a softwareID# associated with the update information 52 or an identification of abathing unit component to which the update information 52 relates, amongother possibilities. The update information 52 includes the necessaryinformation (such as program code) for updating the data 47 and programinstructions 48 stored in the memory unit 42 of the controller 34. Theupdate information 52 can include one or more files that each relate todifferent updates that can be applied to the data 47 and/or programinstructions 48 stored at the controller 48. For example, a first updatefile may be operative for updating the controller 34 such that it cancontrol a new bathing unit component, such as a DVD player, whereas asecond update file may be operative for updating the controller 34 suchthat it corrects a bug that was identified in the program instructions48.

As will be described in more detail below, upon establishment of acommunication link between the controller 34 and the external memorymedium 46, the controller 34 is able to access information (such as oneor both of the relevancy information 50 and the update information 52)stored within the external memory medium 46, so as to enable thecontroller 34 to be configured on the basis of the update information52. The manner in which the update information 52 is accessed forcausing the controller 34 to be configured will be described in moredetail below with respect to the flow chart shown in FIG. 3B.

In accordance with the present invention, all processing required foraccessing information stored on the external memory medium 46 isperformed at the controller 34, either independently, or in combinationwith instructions received through the control panel 32 or an externaldevice other than the external memory medium. The external memory medium46 simply needs to be connected either directly, or indirectly, to theinterface 44 of the controller 34, such that the controller 34 canaccess and process the information stored thereon. This greatlysimplifies the updating process since a user/owner of the bathing unitsystem 10, or a manufacturer or supplier of the bathing unit system 10,can simply be provided with the external memory medium 46 containing thenecessary information, in order to cause the controller 34 to beupdated.

It should be appreciated that prior to commencing the updating procedureshown in FIG. 3B, a communication link must first be established betweenthe external memory medium 46 and the controller 34. In the case wherethe interfaces 44 and 54 are male and female physical connection portsrespectively, the communication link is established by physicallyconnecting the two connectors together. It should be appreciated that inthe case where the interfaces 44 and 54 are infrared ports, thecommunication link is established by bringing the two infrared portsinto proximity of one another. Likewise, in the case where interfaces 44and 54 are RF transceivers, the communication link is established bybringing the two transceivers within range of one another.

With reference to FIG. 3B, once a communication link has beenestablished between the controller 34 and the external memory medium 46,at step 400 the controller 34 detects the presence of the externalmemory medium 46 at the interface 44.

The detection of the presence of the external memory medium 46 can bedone in a variety of ways. In accordance with a first non-limitingembodiment, this detection may take place on the basis of instructionsreceived from a user via the control panel 32. For example, once a userhas caused the external memory medium 46 to be connected to thecontroller 34, the user can then use the control panel 32 in order toinstruct the controller 34 to access an external memory medium 46 thatis connected to the interface 44. On the basis of these instructions,and a program element stored within the program instructions 48, thecontroller 34 will then detect the presence of the external memorymedium 46.

In an alternative embodiment, the controller 34 may automatically detectthe presence of the external memory medium 46 once the external memorymedium 46 is connected to the interface 44. For example, the interface44 may include a physical or electronic sensor that detects the presenceof the external memory medium 46 and then transmits a signal indicativeof this presence to the processing unit 40 of the controller 34. In afurther embodiment, the controller 34 may continually run a programmodule that periodically checks whether there is an external memorymedium 46 connected at the interface 44.

Once the controller 34 has detected the presence of the external memorymedium 46, at step 402 the controller 34 accesses the relevancyinformation 50 that is stored within the external memory medium 46. Thisstep of accessing and reading the relevancy information 50 is performedon the basis of a program module stored within the program instructions48 at the controller 34. For example, the controller 34 may issue asignal to the external memory medium 46 for causing the relevancyinformation to be released to the controller 34 through the interfaces54 and 44. As such, the relevancy information 50 is automaticallyaccessed and read upon detection of the presence of the external memorymedium 46.

As mentioned above, the relevancy information 50 stores informationassociated to the update information 52, such as the version of theupdate information 52, the date of the update information, the datastructure of the update information 52 or an identification of a bathingunit component to which the update information 52 relates, among otherpossibilities. In a non-limiting example of implementation, it ispossible that the relevancy information 50 also includes a programelement, such as an autoexec file, that provides the controller 34 withthe necessary information to complete the remaining steps of thebelow-described process. It should, however, be appreciated thatregardless of whether the controller 34 executes the remaining steps ofthe update process on the basis of program instructions stored at thecontroller 34, or on the basis of a file downloaded from the externalmemory medium 46, all the processing for executing this process isperformed at the controller 34.

At step 404, once the processing unit 40 has accessed information storedwithin the external memory medium 46, the processing unit 40 of thecontroller 34 performs a verification step. More specifically, at step404, the processing unit 40 determines that there is in fact relevancyinformation 50 and update information 52 stored on the external memorymedium 46. In certain cases it is possible that the external memorymedium 46 is blank or that the files that were stored on the externalmemory medium 46 were corrupted. In the case where there is noinformation stored on the external memory medium 46, or the informationhas been corrupted, the process of FIG. 3B is terminated. In certaincases the controller 34 can advise a user of the bathing unit system 10that there is no usable information on the external memory medium 46 viathe control panel 32. Or, the controller 34 will do nothing and wait fora user to break the communication link between the external memorymedium 46 and the controller 34.

In the case where there is relevancy information 50 and updateinformation 52 stored on the external memory medium 46, the processingunit 40 proceeds to step 406. At step 406, the processing unit 40determines whether the update information 52 is compatible with thecontroller 34, and specifically with the program instructions 48 storedwithin the controller. This determination may be made on the basis ofthe information included within the relevancy information 50. Forexample, in the case where the update information 52 is stored in anincompatible data structure that will not be able to be integrated intothe program instructions 48, the processing unit 40 will determine thatthe update information is not compatible, and the process of FIG. 3B isterminated. In certain circumstances, the processing unit 40 may alsoverify whether the update information 52 is suitable for use with thecontroller 34, by verifying the software ID of the update information 52in order to determine if it matches with the ID of the controller 34, orthe ID of the program instructions (or other software) that is alreadystored at the controller 34. For example, different bathing unit systems10 may be associated with an ID that designates the type of bathing unitsystem 10, or the customer of the bathing unit system 10. Therefore, theupdate information 52 must have a corresponding software ID in order tobe suitable for use with that controller 34. In the case where theupdate information 52 is not compatible with, or not suitable for usewith, the controller 34, the process of FIG. 3B is terminated. Thecontroller 34 can then advise a user of the bathing unit system 10 thatthe information is incompatible with the controller 34 via the controlpanel 32. Or, the controller 34 can do nothing and wait for a user tobreak the communication link between the external memory medium 46 andthe controller 34.

In the case where the update information 52 that is stored at theexternal memory medium 46 is compatible with the program instructions 48stored at the controller 34, the processing unit 40 will proceed to step408.

At step 408, the processing unit 40 determines whether the updateinformation 52 stored on the external memory medium 46 is alreadyimplemented at the controller 46. This determination can be done on thebasis of the relevancy information 50. As mentioned above, the relevancyinformation 50 stores information for identifying and characterizing theupdate information 52 that is stored on the external memory medium 46.Therefore, the relevancy information 50 may include informationindicative of the version of the one or more of the update filescontained within the update information 52 or a date stamp associatedwith the one or more of the update files contained within the updateinformation 52. The relevancy information 50 may also include anindication of a component to which a particular update file within theupdate information 52 is associated. It should be appreciated that therelevancy information 50 can include any type of data for characterizingthe update information 52. For example, the relevancy information 50 canbe a separate file or alternatively, the relevancy information can bethe file name or bibliographic information associated with the one ormore update files contained within the update information 52.

In the case where the processing unit 40 determines that all of theupdate information 52 has been implemented at the controller 34, theprocess of FIG. 3B is terminated. In such a case, the controller 34 canprovide an indication to a user that there are no new updates, or canwait for a user to break the communication link between the externalmemory medium 46 and the controller 34.

Alternatively, in the case where one or more of the files containedwithin the update information 52 have not been implemented at thecontroller 34, the processing unit proceeds to step 410. At step 410,the processing unit 40 determines whether there is more than one updatefile contained within the update information 52. In the case where thereis only one update file then the processing unit 40 proceeds to step 416wherein the controller is caused to be configured on the basis of theupdate information 52, and specifically on the basis of the update file.

In the case where it is determined that there is more than one updatefile contained within the update information 52 stored on the externalmemory medium 46, then the process proceeds to step 412.

At step 412, the update information 52, that contains the multipleupdate files is displayed to a user of the bathing unit system 10. Theupdate information 52 can be displayed to the user via the control panel32, or via an external device (such as a PDA or computer monitor, amongother possibilities) that can be connected to the controller 34. Theuser can then select one or more of the update files contained withinthe update information 52 that should be used to update the controller34. For example, the user may select an update file that contains morerecent update information than what is currently used at the controller34, or in the case where a new bathing unit component has been added tothe bathing unit system 10, the user may select the update file that isassociated with that bathing unit component.

Although not shown in FIG. 3B, in an alternative embodiment, themultiple different update files contained within the update information52 are not displayed to a user. As such, instead of an update file beingselected by a user, an update file from the list of update files can beselected by the processing unit 40. The processing unit 40 may select anupdate file on the basis of the relevancy information 50, or on thebasis of an input received from a user via the control panel 32. Forexample, the processing unit 40 might compare information in therelevancy information 50 with information already stored at thecontroller 34 in order to determine whether the program instructions 48should be configured on the basis of the update information 52. In thecase where the relevancy information 50 indicates that an update file inthe update information 52 is a more recent version of the programinstructions 48, the processing unit 40 will select that update file.Or, in the case where a new bathing unit component has been added to thebathing unit system 10, and an identification of this new bathing unitcomponent has been entered by a user via the control panel 32, if anupdate file pertaining to that new component is included within theupdate information 52 then the processing unit 40 will select thatupdate file.

Returning back to the flow chart in FIG. 3B, in the case where a userselected an update file from a list of update files at step 412, priorto causing the selected update file to be implemented, the processingunit 40 proceeds to step 414. At step 414, the processing unit 40determines whether the user has selected one of the update files withina predetermined time period. Step 414 can be an optional step, and isincluded in order to provide a time-out function. As such, in the casewhere a user takes too long to select a desired update file, the processof FIG. 3B is terminated, or the processing unit 40 may issue a messageto the user via the control panel 32, indicating “do you require moretime?”.

In the case where a user did select one of the update files within apredetermined time period, the processing unit 40 proceeds to step 416wherein the controller 34 is caused to be updated on the basis of theupdate information 52, and specifically the update file selected by theuser. More specifically, at step 416, the processing unit 40 causes thecontroller 34 to be updated by updating the data 47 and/or programinstructions 48 on the basis of the update file contained in the updateinformation 52.

In accordance with a first non-limiting example of implementation, theupdate information 52 may be released to the controller 34 at the sametime as the relevancy information 50, at step 402 and is just not usedby the controller 34 until it is needed. Alternatively, in accordancewith a second non-limiting example of implementation, the updateinformation 52 may not be released to the controller 34 until step 410when the controller 34 determines whether there is more than one updatefile in the update information 52.

As previously mentioned, the process that has been described above withrespect to FIG. 3B can be performed entirely by the controller 34 byexecuting a program element stored in the memory unit 42. For example,the memory unit 42 stores program instructions that are executed by theprocessing unit 40 for causing the processing unit 40 to access therelevancy information 50 and update information 52, determine whether ornot to update the data 47 and/or program instructions 48 and cause thedata 47 and/or program instructions 48 at the controller 34 to beupdated.

Alternatively, the process that has been described above with respect toFIG. 3B can be performed by the controller 34 along with input from auser via the control panel 32. In such a case, the memory unit 42 of thecontroller 34 still stores program instructions that are executed by theprocessing unit 40, however, the detection of the presence of theexternal memory medium 46 and the selection of an update file containedwithin the update information 52 may all be done on the basis ofinstructions received from the user.

Given that all the processing required for executing the processdescribed with respect to FIG. 3B is performed at the controller 34,either independently, or in combination with instructions receivedthrough the control panel 32, no processing is done by the externalmemory medium 46. As such, the external memory medium 46 simply includesstored data, and in some cases stored program elements, but does nothave any processing capability built in.

As mentioned above, in certain circumstances, the external memory medium46 may include a program element to be executed by the processing unit40 of the controller 34. For example, an autoexec file can be includedwithin the relevancy information 50. As such, once the controller 34 hasaccessed the relevancy information 50, the processing unit 40 of thecontroller 34 then executes the autoexec file stored on the externalmemory medium 46 in order to execute steps 404-416 of the processdescribed with respect to FIG. 3B. In such an embodiment, it should beappreciated that although the external memory medium 46 does in factinclude a program element, the processing functionality is stillperformed at the controller 34.

Configuration Information

As mentioned above, the external memory medium 46 can also be used forproviding configuration information for configuring the functionality ofthe controller 34.

Shown in FIGS. 4A and 4B are two non-limiting block diagrams of thecontroller 34 and an external memory medium 46 in accordance with thepresent invention. In both cases, the controller 34 includes theprocessing unit 40, the memory unit 42, the plurality of bathing unitcomponent interfaces 58 for enabling the controller to control thebathing unit components 11, 13, 26, 28, 30 and the interface 44 throughwhich the controller 34 can establish a communication link with theexternal memory medium 46.

It should be appreciated that different bathing unit systems 10 can havevery different operational capabilities, and that depending on thenature of the bathing unit system 10 (meaning the number and type ofbathing unit components included) the manner in which the controller isconfigured will also need to be different. More specifically, thecontroller will need to be configured differently depending on thenumber and type of bathing unit components included, or the model ofbathing unit system 10 in which the controller 34 is being used.

For example, in a first configuration the controller may control a firstset of bathing unit components, while in a second configuration thecontroller may control a second set of bathing unit components. Thesecond set of bathing unit components may be a reduced set of the firstset of bathing unit components or the second set of bathing unitcomponents may be a completely different set of bathing unit componentsthan the first set of bathing unit components. In a further non-limitingexample, the controller may be configured in accordance with differentconfigurations in order to be able to control the operational settingsof the bathing unit components differently. For example, depending onthe configuration, the controller may be able to operate the water pumpat different speeds, or control the timing of the bathing unitcomponents differently. In addition, depending on the configuration ofthe controller, the controller may be able to control the type offiltration that is used to filter the water. Therefore, it should beappreciated that the way the controller controls the operationalsettings of the bathing unit components can depend on the configurationof the controller.

In order to avoid having to manufacture different customized bathingunit controllers 34 for each different type of bathing unit system 10that is produced by a given manufacturer, it is desirable to make ageneric bathing unit controller that includes the structure (andoptionally software) necessary such that it can be configured in orderto be suitable for controlling many different types of bathing unitsystems 10. In this manner, once it is known what type of bathing unitsystem 10 a controller is going to be used with, the generic controller34 can simply be configured for controlling that type of bathing unitsystem 10.

The manner in which a generic bathing unit controller 34 can beconfigured can be done in at least two different manners. In accordancewith a first non-limiting embodiment depicted in FIG. 4A, the structureand software required for multiple different configurations are alreadyincluded within the generic controller 24. In other words, thecontroller 34 is manufactured such that it includes the structure andthe different sets of program instructions necessary for causing thecontroller 34 to acquire different configurations.

In accordance with the second non-limiting embodiment, which is depictedin FIG. 4B, no pre-stored program instructions are included within thememory unit 42 of the controller for enabling the controller 34 toacquire a given configuration. Instead, in order to cause the controller34 to acquire a desired configuration, program instructions for causingthe controller 34 to acquire that configuration must be downloaded tothe controller 34 from an external source.

Each of these embodiments will now be described in more detail.

Referring back to FIG. 4A, the memory unit 42 of the controller 34stores a first set of program instructions 64 that when activated causethe controller 34 to acquire a first configuration, and a second set ofprogram instructions 66 that when activated cause the controller 34 toacquire a second configuration. Although only two sets of programinstructions are shown in the memory unit 42 of FIG. 4A, it should beappreciated that any number of sets of program instructions could bestored within the memory unit 42.

When it is known what kind of bathing unit system 10 the controller 34will be used for, the controller 34 is caused to implement a given setof program instructions from the pre-stored sets of program instructions64, 66 thereby causing the controller 34 to acquire a givenconfiguration. As mentioned above, the different sets of programinstructions are operative for causing the controller 34 to acquiredifferent configurations for controlling different bathing unit systems10. For example, the first set of program instructions 64 may beoperative for configuring the controller 34 to control a high-endbathing unit system, whereas the second set of program instructions 64may be operative for configuring the controller to control a lower-endbathing unit system. The high-end bathing unit system 10 may require thecontroller 34 to control a first set of bathing unit components thatincludes a heating module, air pumps, an air blower, an ozonator, a CDplayer, a DVD player and lighting units. In contrast, a low-end bathingunit system 10 may require the controller 34 to control a second set ofbathing unit components that is a reduced set that includes only theheating module, air pumps and air blower.

Alternatively, the first and second set of program instructions 64, 66may cause the controller 34 to control the same set of bathing unitcomponents, but the first set of program instructions configures thecontroller 34 to control more settings of the components. In yet afurther alternative, the first and second set of program instructions64, 66 may configure the controller 34 to control completely differentsets of bathing unit components. In such a scenario, and with referenceto FIG. 2, the first set of program instructions may configure thecontroller 34 to control only the bathing unit components connected tothe smaller bathing unit component interfaces 58, whereas the second setof program instructions may configure the controller 34 to control onlythe bathing unit components connected to the larger bathing unitcomponent interfaces 58.

Again, although only two sets of program instructions for configuringthe controller 34 in two different ways are being described herein, thecontroller 34 may be suitable for pre-storing any number of sets ofprogram instructions for acquiring any number of differentconfigurations without departing from the spirit of the invention.

In accordance with the present invention, the information necessary forcausing the controller 34 to acquire one of the configurations that hasbeen pre-stored within the controller's memory unit 42 is included asthe configuration information 60 within the external memory medium 46.As such, the configuration information 60 stored on the external memorymedium 46 is operative for configuring the controller 34 by causing oneof the pre-stored sets of program instructions to be implemented suchthat the controller 34 operates by executing the implemented set ofprogram instructions. As will be described in more detail further on inthe description, the configuration information 60 stored on the externalmemory medium 46 may include a code, or a set of program instructions,for causing the controller 34 to select a set of program instructionsfrom the pre-stored set of program instructions.

In accordance with the embodiment shown in FIG. 4A, the configurationinformation 60 that is stored on the external memory medium 46 mayinclude a single access code, or a single program element, that acts asa key to unlock the appropriate set of program instructions that arepre-stored within the controller 34. Alternatively, the configurationinformation 60 that is stored on the external memory medium 46 mayinclude a plurality of codes, or a plurality of program elements, thatare each associated with a respective set of program instructions 64, 66that are stored in the memory 42 of the controller 34. In addition, eachof these plurality of codes, or plurality of program elements, is alsoassociated with a serial number or a password. The serial number couldbe associated with a serial number of a bathing unit system 10, or witha type of configuration, among other possibilities. As such, based on auser input (via the control panel 32, for example) of the appropriateserial number or password, the code corresponding to that serial numberor password unlocks the corresponding set of program instructions thatare pre-stored within the controller 34. In this manner, the controller34 acquires the configuration that is suitable for the bathing unitsystem 10 associated with the serial number or password.

Referring now to the embodiment shown in FIG. 4B, no pre-storedconfiguration information is included within the memory unit 42 of thecontroller 34. In other words, no pre-stored program instructions areincluded within the memory unit 42 for causing the controller 34 toacquire a given configuration. Instead, the memory unit 42 includes onlyinitial program instructions 62, which provide the controller 34 withthe appropriate program elements for facilitating the download of thenecessary configuration information. In this embodiment, until thecontroller 34 has downloaded appropriate configuration information, thecontroller 34 cannot function to control the bathing unit components 11,13, 28, 26, 30, in a desired manner.

In accordance with this embodiment, the configuration information 60that is stored within the external memory medium 46 includes one or moresets of program instructions that can be downloaded to the controller 34for configuring the controller 34. For example, the configurationinformation 60 may include only a single set of program instructionsthat can be downloaded so as to configure the controller 34 such that itoperates by executing that set of program instructions. Oralternatively, the configuration information 60 stored on the externalmemory medium 46 can include a plurality of sets of programinstructions, such that each set of program instructions would configurethe controller 34 in a different way. The appropriate set of programinstructions to be provided to the controller 34 can be selected basedon a selection by a user, or based on an input of a serial number, orother selection criteria, by a user via the control panel 32.

As such, the configuration information 60 stored on the external memorymedium 46 is operative for configuring the controller 34 by causing aset of program instructions to be downloaded to the controller 34,thereby causing the controller to be configured in accordance with thatset of program instructions.

The manner in which the configuration information 60 is accessed forcausing the controller 34 to be configured, will now be described inmore detail with respect to the flow chart shown in FIG. 4C. The processdescribed with respect to FIG. 4C is applicable to both of theembodiments shown in FIGS. 4A and 4B.

In accordance with the present invention, the processing required foraccessing the configuration information 60 stored on the external memorymedium 46 is performed at the controller 34, either independently, or incombination with instructions received from a user via the control panel32. The program logic required to perform this processing can beincluded within the initial program instructions 62 at the controller34, or alternatively, some of the program logic can be stored on theexternal memory medium 46 (such as in the case where the configurationinformation 60 includes an autoexec file) to be executed by theprocessing unit 40 of the controller 34.

As such, the external memory medium 46 simply needs to be connectedeither directly, or indirectly, to the interface 44 of the controller34, such that the controller 34 can access and process the configurationinformation 60 stored thereon. This greatly simplifies the updatingprocess since a user, owner or supplier of the bathing unit system 10,can simply be provided with the external memory medium 46 containing thenecessary configuration information.

It should be appreciated that prior to commencing the configurationprocedure shown in FIG. 4C, a communication link is established betweenthe external memory medium 46 and the controller 34. In the case wherethe interfaces 44 and 54 are female and male USB connection portsrespectively, the communication link is established by physicallyconnecting the two portions of the USB connectors together. It should,however, be appreciated that in the case where the interfaces 44 and 54are infrared ports, the communication link is established by bringingthe two infrared ports into proximity of one another. Likewise, in thecase where interfaces 44 and 54 are RF transceivers, the communicationlink is established by bringing the two transceivers within range of oneanother.

With reference to FIG. 4C, once a communication link has beenestablished between the controller 34 and the external memory medium 46,at step 500 the controller 34 detects the presence of the externalmemory medium 46 at the interface 44.

The detection of the presence of the external memory medium 46 can bedone in a variety of ways. In accordance with a first non-limitingembodiment, this detection may take place on the basis of instructionsreceived from a user via the control panel 32. For example, once a userhas caused the external memory medium 46 to be connected to thecontroller 34, the user can then use the control panel 32 in order toinstruct the controller 34 to access the external memory medium 46 thatis connected to the interface 44. On the basis of these instructions,and a program element stored within the initial program instructions 62,the controller 34 will then detect the presence of the external memorymedium 46.

In an alternative embodiment, the controller 34 may automatically detectthe presence of the external memory medium 46 once the external memorymedium 46 has been connected to the interface 44. For example, theinterface 44 may include a physical or electronic sensor that detectsthe presence of the external memory medium 46 and then transmits asignal indicative of this presence to the processing unit 40 of thecontroller 34. In a further embodiment, the controller 34 maycontinually run a program module that periodically checks whether thereis an external memory medium 46 connected at the interface 44.

Once the controller 34 has detected the presence of the external memorymedium 46, at step 502 the controller 34 accesses the configurationinformation 60. This step of accessing and reading the configuration isperformed on the basis of a program module stored within the initialprogram instructions 62 at the controller 34. For example, thecontroller 34 may issue a signal to the external memory medium 46 forcausing the configuration information 60 to be released to thecontroller 34 through the interfaces 54 and 44. As such, theconfiguration information 60 is automatically accessed and read upondetection of the presence of the external memory medium 46.

As mentioned above, the configuration information 60 stores either oneor more access codes, or program elements, that act to unlock orimplement the appropriate set of program instructions that arepre-stored within the controller 34, or alternatively, the configurationinformation 60 stores one or more sets of program instructions that canbe downloaded to configure the controller 34. In a non-limiting exampleof implementation, it is possible that the configuration information 60also includes a program element, such as an autoexec file, that providesthe controller 34 with the necessary information to complete theremaining steps of the below-described process. It should, however, beappreciated that regardless of whether the controller 34 executes theremaining steps of the update process on the basis of programinstructions stored within the initial program instructions 62 at thecontroller 34, or on the basis of a file downloaded from the externalmemory medium 46, all the processing for executing this process isperformed at the controller 34.

At step 504, once the processing unit 40 has accessed information storedwithin the external memory medium 46, the processing unit 40 of thecontroller 34 performs a verification step. More specifically, at step504, the processing unit 40 determines that there is in factconfiguration information 60 available and stored on the external memorymedium 46. In certain cases it is possible that the external memorymedium 46 is blank or that the configuration information 60 that wasstored on the external memory medium 46 was corrupted. In the case wherethere is no information stored on the external memory medium 46, or theinformation has been corrupted, the process of FIG. 4C is terminated. Incertain cases the controller 34 can advise a user of the bathing unitsystem 10 via the control panel 32 that there is no usable configurationinformation 60 on the external memory medium 46. Or, the controller 34will do nothing and wait for a user to break the communication linkbetween the external memory medium 46 and the controller 34.

In the case where there is configuration information 60 available on theexternal memory medium 46, the processing unit 40 proceeds to step 506.At step 506, the processing unit 40 determines whether the configurationinformation 60 is compatible with the controller 34, and specificallywith the program instructions 48 stored within the controller 34, andwhether the configuration information 60 stored on the external memorymedium 46 is suitable for use with the controller 46. (It should beappreciated that this step is optional, and is preferably performed whenthe configuration information 60 includes program instructions to bedownloaded to the controller 34).

When checking whether the configuration information 60 is compatiblewith the controller, the processing unit 40 verifies the data structureof the configuration information 60 stored within the external memorymedium 46. In the case where the configuration information 60 is storedin an incompatible data structure that will not be able to be integratedinto the program format of the initial program instructions 62 (or thefirst and second sets of program instructions 64, 66 in FIG. 4A), theprocessing unit 40 will determine that the configuration information 60is not compatible. When checking whether the configuration information60 is suitable for use with the controller 34, the processing unit 40verifies the software ID of the configuration information 60 in order todetermine if it matches with the ID of the controller 34, or the ID ofthe program instructions (or other software) that is already stored atthe controller 34. For example, different bathing unit systems 10 may beassociated with an ID that designates the type of bathing unit system10, or the supplier of the bathing unit system 10. Therefore, theconfiguration information 60 must have a corresponding software ID inorder to be suitable for use with that controller 34. In the case wherethe configuration information 60 is not compatible with the controller34 and/or the configuration information 60 is not suitable for use withthe controller 34, the process of FIG. 4C is terminated. The controller34 can advise a user of the bathing unit system 10 via the control panel32. Or, the controller 34 can do nothing and wait for a user to breakthe communication link between the external memory medium 46 and thecontroller 34.

In the case where the configuration information 60 that is stored at theexternal memory medium 46 is compatible with the initial programinstructions 62 (or the first and second program instructions 64, 66)stored at the controller 34, the processing unit 40 will proceed to step508.

At step 508, the processing unit 40 determines whether the controller 34has already been configured, meaning has a configuration already beenimplemented at the controller 34. In the case where the processing unit40 determines that a configuration has not been implemented at thecontroller 34, then the processing unit 40 proceeds to step 512, whichwill be described in more detail below. Whereas, in the case where a theprocessing unit 40 determines that a configuration has been implementedat the controller 34, then the processing unit 40 proceeds to step 510.

At step 510, the processing unit 40 determines 1) whether theconfiguration information 60 contained within the external memory medium46 includes a more recent version of the set of program instructions forthe configuration that is currently being implemented by the controller34 and 2) whether the configuration information 60 contained within theexternal memory medium 46 includes an access key or program element for“unlocking” an alternative set of program instructions that have beenpre-stored at the controller for enabling the controller to implement adifferent configuration, or includes a different set of programinstructions that can be downloaded to the controller for enabling thecontroller to implement a different configuration.

In the case where configuration information 60 includes none of theabove information, then the process of FIG. 4C is terminated. Theprocessing unit 40 can then advise a user via the control panel 32 thatno new information is included within the external memory medium 46. Or,the processing unit 40 can do nothing and wait for a user to break thecommunication link between the external memory medium 46 and thecontroller 34.

At step 512, the processing unit 40 determines whether there is morethan one set of configuration information 60 stored within the externalmemory medium 46. In the case where the configuration information 60only contains sufficient information to allow the controller 34 toacquire one configuration, then the process proceeds to step 520,wherein the controller 34 is configured on the basis of theconfiguration information 60. This will be described in more detailfurther on in the description.

Whereas, in the case where the configuration information 60 containssufficient information to allow the controller 34 to acquire aconfiguration from a selection of configurations (meaning that theconfiguration information 60 includes a plurality of sets of programinstructions, or a plurality of different access codes or programelements), then the process proceeds to one of step 514 and 516. In thecase where the controller 34 includes a plurality of different sets ofprogram instructions stored within the memory 42 (as shown in FIG. 4A)then the process proceeds to step 516, wherein a user is required toenter information, such as a serial number or a password, such that thecontroller 34 will know which access code or program element to use tounlock a corresponding set of program instructions. Alternatively, inthe case where the controller 34 does not have any pre-stored programinstructions (as shown in FIG. 4B) then the process proceeds to step518, wherein the different sets of program instructions that are storedon the external memory medium 46 are displayed to a user. These can bedisplayed via the control panel 32, or via an external device (otherthan the external memory medium) such that a user can select from amongthem.

Regardless of whether step 514 or step 516 (or both) is executed (whichdepends on the physical structure and programming of the controller 34),prior to causing the new (or updated) configuration to be implemented bythe controller 34, the processing unit 40 goes to optional step 518. Atstep 518, the processing unit 40 determines whether the user hasselected one of the sets of program instructions, or entered theappropriate selection information, within a predetermined time period.Step 518 can be an optional step, and is included in order to provide atime-out function. As such, in the case where a user takes too long toselect one of the displayed sets of program instructions, or enter theappropriate selection information, the processing unit 40 could stop theprocess. As such, a user would need to remove the external memory medium46 and start the process all over again. Or alternatively, theprocessing unit 40 may issue a message to the user via the control panel32, indicating “do you require more time?”.

In the case where the user's input was received within a predeterminedtime period, the processing unit 40 proceeds to step 520 wherein thecontroller 34 is caused to implement a configuration on the basis of theconfiguration information 60. This step can be performed in a variety ofdifferent manners, depending on whether the controller 34 has pre-storedprogram instructions (as shown in FIG. 4A) or depending on whether thecontroller 34 does not have any pre-stored program instructions (asshown in FIG. 4B).

In the case where the controller 34 has pre-stored program instructions(as shown in FIG. 4A), the manner in which the controller is caused tobe configured is dependent on the type of configuration information 60that is stored within the external memory medium 46. As mentioned above,the configuration information may be in the form of an access code, orprogram element, that acts as a key suitable for unlocking anappropriate one of the first set of program instructions 64 or thesecond set of program instructions 66 (or additional sets of programinstructions, if included within the memory 42). As such, a given accesscode or a given program element will be associated with a given set ofprogram instructions. Therefore, each access code or program elementwill be suitable for unlocking only its associated set of programinstructions.

Alternatively, the configuration information 60 may include one or moreconfiguration files that are each suitable for configuring a respectiveset of program instructions that have been pre-stored within thecontroller 34.

In the case where the external memory medium 46 includes only a singleaccess code, or a single configuration file, the processing unit 40 ofthe controller 34 is operative for executing a program element stored inthe initial program instructions 62 (or in an autoexec file on theexternal memory medium 46) for causing the access code, program elementor configuration file stored within the external memory medium 46 to“unlock” or configure its corresponding set of program instructionscontained within the memory 42. Once unlocked, or configured, thecontroller 34 can execute that set of program instructions, such thatthe controller 34 is configured in accordance with those programinstructions.

In the case where the external memory medium 46 includes a plurality ofaccess codes, program elements, or configuration files, that are eachassociated with a respective set of program instructions, the manner inwhich the controller is configured is a bit different. Morespecifically, the configuration information 60 may be processed at leastin part on the basis of additional information supplied to theprocessing unit 40 via the user control panel 32 of the bathing unitsystem 10, as described above with respect to step 516. As previouslydescribed, in addition to being associated to a respective set ofprogram instructions stored within the controller 34, each access code,program element or configuration file, that is stored on the externalmemory medium 46 is also associated with a bathing unit serial number,or a password. As such, once the external memory medium 46 has beenconnected to the controller 34 and the controller has accessed theconfiguration information 60, then a human operator may enter a serialnumber, or a password, into the control panel 32 of the bathing unitsystem 10. By entering the serial number or password, the access code,program element or configuration file that is associated with thatserial number or password is then caused to be executed by thecontroller 34. This, in turn, causes the set of program instructionsassociated with that access code, program element, to be “unlocked” andexecuted by the controller 34, such that the controller 34 is configuredin accordance with those program instructions.

In this manner, a manufacturer of the bathing unit controller 34 canmanufacture a common controller 34, and then depending on the desireduse of the controller 34, the manufacturer can provide an end user withan appropriate external memory medium 46, and in certain cases a serialnumber or password, such that the end user can then configure thecontroller 34 themselves. In the case where a manufacturer supplies adistributor with a large number of controllers 34, the manufacturer canprovide the distributor with exactly the same controller 34 regardlessof whether the distributor wants some controllers 34 configured in afirst way, and some controllers 34 configured in a second way. Instead,the manufacturer can provide the distributor with a number of identicalcontrollers 34, and one or more external memory mediums 46 (and possiblyserial numbers or passwords), that are suitable for configuring thecontrollers to acquire either a first configuration or a secondconfiguration.

In the case where the controller 34 does not have pre-stored programinstructions (as shown in FIG. 4B), the manner in which the controller34 is caused to be configured is once again dependent on the type ofconfiguration information 60 that is stored within the external memorymedium 46. As mentioned above, in this embodiment, the configurationinformation 60 is in the form of one or more sets of programinstructions that can be downloaded to the controller 34 for causing thecontroller 34 to acquire a given configuration. Each of the sets ofprogram instructions stored within the external memory medium 46 will beassociated with a respective different configuration.

In the case where the external memory medium 46 includes only a singleset of program instructions, the processing unit 40 of the controller 34is operative for executing a program element stored in the initialprogram instructions 62, for causing that set of program instructions tobe downloaded to the controller 34 and stored within the memory 42. Oncedownloaded, the controller 34 can execute that set of programinstructions, such that the controller 34 is configured in accordancewith those program instructions.

In the case where the external memory medium 46 stores a plurality ofsets of program instructions that are each associated with a respectivedifferent configuration, the manner in which the controller isconfigured is a bit different. More specifically, the configurationinformation 60 may be processed at least in part on the basis ofadditional information supplied to the processing unit 40 via the usercontrol panel 32 of the bathing unit system 10. For example, and asdescribed above with respect to step 514, a list of the different setsof program instructions can be displayed to a user via the control panel32, or another external device that is different from the externalmemory medium 46. As such, a user may then select one of the sets ofprogram instructions from the list. By selecting a set of programinstructions from the list, that set of program instructions is thencaused to be downloaded to the controller 34, such that it can be storedin the memory 42. Alternatively, each set of program instructions storedwithin the external memory medium 46 can be associated with a serialnumber, or a password. As such, once the external memory medium 46 hasbeen connected to the controller 34 and the controller 34 has accessedthe configuration information 60, then a human operator may enter aserial number, or a password, into the control panel 32 of the bathingunit system 10. By entering the serial number or password, the set ofprogram instructions that is associated to that serial number orpassword is then caused to be downloaded to the controller 34, such thatit can be stored in the memory 42. Once downloaded, the controller 34can execute that set of program instructions, such that the controller34 is configured in accordance with those program instructions.

In this manner, a manufacturer of the bathing unit controller 34 canmanufacture a common controller 34, and then depending on the desireduse of the controller 34, the manufacturer can provide the end user ordistributor with an appropriate external memory medium 46, and incertain cases a serial number or password, such that the distributor orend user can then configure the controller 34.

In an alternative embodiment, the configuration information 60 mayinclude a program element suitable that is suitable for being processedby the processing unit 40 of the controller 34 for causing certainhardware elements to be permanently or temporarily altered (i.e. pathsburned, switches put in place, etc. . . . ) so as to configure thecontroller 34.

As described above, regardless of whether there are program instructionspre-stored within the memory unit 42 of the controller 34 (as shown inFIG. 4A), or whether the program instructions need to be downloaded tothe controller 34 (as shown in FIG. 4B), the process that has beendescribed above with respect to FIG. 4C is performed entirely by thecontroller 34 by executing the initial program instructions 62 stored inthe memory unit 42 or in some circumstances, a program element that wasstored on the external memory medium 46.

It should also be appreciated that the process that has been describedabove with respect to FIG. 4C can be performed by the controller 34along with input that is received from a human operator via the controlpanel 32.

Given that all the processing required for accessing and configuring thecontroller 34 is performed at the controller 34, either independently,or in combination with instructions received through the control panel32, there is no need for any processing to be done by the externalmemory medium 46. As such, the external memory medium 46 simply includesstored data, and in certain cases program elements, but does not haveany processing capability built in.

As mentioned above, in certain circumstances, the external memory medium46 may include an autoexec file such that once the controller 34 hasaccessed the configuration information 60, the processing unit 40 of thecontroller 34 executes the autoexec file stored on the external memorymedium 46. The autoexec file can be operative for causing the processingunit 40 to download the configuration information 60, or determine whichcode or set of program instructions should be downloaded. In such anembodiment, it should be appreciated that although the external memorymedium 46 does in fact include a program element, the processingfunctionality is still performed at the controller 34.

In accordance with a second non-limiting example of implementation,instead of configuring the controller 34 by configuring programinstructions, the configuration information 60 contained in the externalmemory medium 46 is operative for configuring hardware within thecontroller. For example, the configuration information 60 may causecertain hardware to be activated that causes the controller 34 toacquire a certain configuration. For example, the hardware may beconfigured such that only bathing unit components connected to certainones of the bathing unit component interfaces 58 can be controlled.

Diagnostic Information

As shown in FIG. 5A, a further use for the external memory medium 46 isfor receiving from the controller 34 diagnostic information associatedwith the operation of either the controller 34 or the set of bathingunit components 11, 13, 26, 28, 30.

Shown in FIG. 5A is a non-limiting block diagram of the controller 34and an external memory medium 46 in accordance with the presentinvention. As described previously with relation to FIG. 3A, thecontroller 34 includes a processing unit 40, a memory unit 42 thatstores data 47 and program instructions 48 and a plurality of bathingunit component interfaces 58 for enabling the controller to control thebathing unit components 11, 13, 26, 28, 30 and an interface 44 throughwhich the controller 34 establishes a communication link with theexternal memory medium 46.

During operation of the bathing unit system 10, it is possible forerrors and malfunctions to occur with the controller 34 or with one ormore of the bathing unit components 11, 13, 26, 28, 30. It is oftendesirable to record the operational history of the bathing unit system10 during its operation, so as to help a technician determine the sourceof such errors and malfunctions when they occur. In the past, when anerror or malfunction occurred, the entire bathing unit controller 34would need to be returned to the manufacturer or to a repair shop inorder to determine what was wrong with the controller 34. Obviously,returning a controller 34 to the manufacturer or repair shop is bothinconvenient and expensive to do.

In accordance with the present invention, and as shown in FIG. 5A, anexternal memory medium 46 can be connected to the controller 34 viainterface 44, so as to establish a communication link between thecontroller 34 and the external memory medium 46. The controller 34 canthen be caused to provide diagnostic information 70 associated with theoperation of the controller 34 or the set of bathing unit components 11,13, 26, 28, 30 to the external memory medium 46 over the communicationlink.

The diagnostic information 70 may include a variety of different typesof data associated with the operation of the controller 34 and/or theset of bathing unit components 11, 13, 26, 28, 30. For example, thediagnostic information 70 may include the operational settings of allthe bathing unit components 11, 13, 26, 28, 30 during start-up, the timestamps associated with different events that occur during the operationof the bathing unit components 11, 13, 26, 28, 30 (such as when theheating module is turned on, when it is turned off, etc.) and a historyof various events that occur (such as lights being turned on, jets beingactivated, etc.) In addition, the diagnostic information could includeinformation such as commands sent from the controller 34 to the bathingunit components 11, 13, 26, 28, 30, operational settings of the bathingunit components 11, 13, 26, 28, 30 over time, as well as inputs receivedfrom a control panel 32.

As will be described below, the controller 34 can store diagnosticinformation 70 associated with the functioning of the controller 34 andthe bathing unit components 11, 13, 26, 28, 30 temporarily within thememory unit 42 such that it is later transferred to the external memorymedium 46, or alternatively, the controller 34 can stored the diagnosticinformation 70 directly into the external memory medium 46.

In accordance with a first non-limiting embodiment, the controller 34temporarily stores the diagnostic information 70 within the memory unit42 of the controller 34. The diagnostic information that is storedwithin the memory unit 42 can then be provided (uploaded) to theexternal memory medium 46 upon receipt of instructions to upload thediagnostic information, or when a malfunction occurs with the controller34 or with one or more of the bathing unit components 11, 13, 26, 28,30. Alternatively, the diagnostic information can be periodicallyprovided to the external memory medium 46 at predetermined timeintervals (every few days or weeks).

In accordance with a second non-limiting embodiment, the external memorymedium 46 may be connected to the controller 34 for a long period oftime (i.e. days, weeks or months), such that the diagnostic informationis transferred directly to the external memory medium 46. As such, thememory unit 42 does not continually record diagnostic information to itsinternal memory unit 42, and instead simply starts recording diagnosticinformation directly to the external memory medium 46 when the externalmemory medium 46 is connected to the controller 34 via interface 44. Incertain circumstances where bugs/malfunctions are difficult toreproduce, it is advantageous to have the external memory medium 46connected to the controller 34 for a long period of time, such that thediagnostic information is recorded to the external memory medium 46 whenthe malfunction happens.

Once the diagnostic information has been transferred to the externalmemory medium, instead of having to return the entire controller 34 to amanufacturer of the controller 34 when errors/malfunctions occur, auser/owner of the bathing unit system 10 can simply send the externalmemory medium 46 back to the manufacturer or repair center for analysis.Obviously, sending an external memory medium 46, such as a memory key ora CD, to a manufacturer, or sending the information that has beentransferred to the external memory medium 46 to the manufacturer overthe internet, is far easier than returning the entire bathing unitcontroller 34. By providing the diagnostic information associated to agiven bathing unit controller 34 to a manufacturer, or maintenanceprovider, then it can be determined why a malfunction occurred, how amalfunction occurs over time, or how a new installation is performingover time.

The manner in which the diagnostic information 70 is transferred to theexternal memory medium 46 will now be described in more detail withrespect to the flow chart shown in FIG. 5B.

In accordance with the present invention, the processing required forcausing the diagnostic information to be uploaded to the external memorymedium 46 is performed at the controller 34, either independently, or incombination with instructions received through the control panel 32. Theprogram instructions required to perform this processing can be includedwithin the program instructions 48 that are stored at the controller 34,or alternatively, some of the program instructions can be stored on theexternal memory medium 46 (such as in the case where the external memorymedium 46 includes an autoexec file, to be executed by the processingunit 40 of the controller 34).

As such, the external memory medium 46 simply needs to be connectedeither directly, or indirectly, to the interface 44 of the controller34, such that the controller 34 can cause diagnostic information to beuploaded thereto. This greatly simplifies the transferring proceduresince a user/owner of the bathing unit system 10, or the manufacturer ofthe bathing unit system 10, simply needs to establish a communicationlink between the external memory medium 46 and the controller 34, inorder to have the diagnostic information 70 transferred thereto.

Prior to commencing the transferring procedure, a communication link isestablished between the external memory medium 46 and the controller 34.In the case where the interfaces 44 and 54 are female and male USBconnection ports respectively, the communication link is established byphysically connecting the two portions of the USB connectors together.It should, however, be appreciated that in the case where the interfaces44 and 54 are infrared ports, the communication link is established bybringing the two infrared ports into proximity of one another. Likewise,in the case where interfaces 44 and 54 are RF transceivers, thecommunication link is established by bringing the two transceiverswithin range of one another.

Once the communication link has been established, the first step 600 inthe procedure, is to detect the presence of the external memory medium46 at the interface 44.

In accordance with a first non-limiting embodiment, this detection maytake place on the basis of instructions received from a user via thecontrol panel 32. For example, once a user has caused the externalmemory medium 46 to be connected to the controller 34, the user can thenuse the control panel 32 in order to instruct the controller 34 toaccess the external memory medium 46 that is connected to the interface44. On the basis of these instructions, the controller 34 will thendetect the presence of the external memory medium 46.

In an alternative embodiment, the controller 34 may automatically detectthe presence of the external memory medium 46 once the external memorymedium 46 has been connected to the interface 44. For example, theinterface 44 may include a physical or electronic sensor that detectsthe presence of the external memory medium 46 and then transmits asignal indicative of this presence to the processing unit 40 of thecontroller 34. In a further embodiment, the controller 34 maycontinually run a program module that periodically checks whether thereis an external memory medium 46 connected at the interface 44.

Once the controller 34 has detected the presence of the external memorymedium 46, at step 602, the controller 34 causes the diagnosticinformation to be transferred to the external memory medium 46 throughthe interface 44. This step can be performed in a variety of differentmanners, depending on whether the controller 34 is operative forpre-storing the diagnostic information within the internal memory unit42, or whether the controller 34 is operative for storing the diagnosticinformation directly to the external memory medium 46 in real-time, asevents happen.

In the case where the controller 34 is operative for pre-storing thediagnostic information within the memory unit 42, the controller 34 cancause all or part of the diagnostic information stored within the memoryunit 42 to be uploaded to the external memory medium 46 on the basis ofa variety of different factors. For example, all or part of thediagnostic information can be transferred to the external memory medium46 whenever it is detected that a communication link has beenestablished between the external memory medium 46 and the controller 34.Alternatively, all or part of the diagnostic information can betransferred to the external memory medium 46 on the basis ofinstructions to upload the diagnostic information received from a humanoperator via the control panel 32. In yet a further alternative, all orpart of the diagnostic information can be transferred to the externalmemory medium 46 at predetermined time intervals (such as once a day oronce a week) or whenever an error or malfunction occurs with thecontroller 34 or one or more of the bathing unit components 11, 13, 26,28, 30.

The processing unit 40 may determine which parts, if not all, of thediagnostic information stored in memory unit 42 to transfer to theexternal memory medium 46 at least in part on the basis of an input froma user via the control panel 32.

In order to determine when to upload the diagnostic information to theexternal memory medium 34, the processing unit 40 of the controller 34can access a program element stored in its program instructions 48.Based on execution of this program element, and possibly instructionsreceived from a user via the control panel, the processing unit 40 candetermine that diagnostic information should be transferred to theexternal memory medium 46 and cause the diagnostic information to bereleased to the external memory medium 46. In such an embodiment, theexternal memory medium 46 acts simply as a memory storage device, anddoes not include any executable program instructions or processingcapability built in.

In an alternative embodiment, upon detection of the external memorymedium 46 at the interface 44, the processing unit 40 can access aprogram element stored in the external memory medium 46. For example,the processing unit 40 may issue a signal to the external memory medium46 for causing the program element, such as an autoexec file, to bereleased to the controller 34 through the interfaces 54 and 44. Oncereleased, this program element can be executed at the controller 34, soas to cause the controller 34 to release diagnostic informationassociated with the operation of the set of bathing unit components tothe external memory medium 46 for storage. In such an embodiment, itshould be appreciated that although the external memory medium 46 doesin fact include a program element, the processing functionality is stillperformed at the controller 34.

In the case where the controller 34 is operative for transferring thediagnostic information to the external memory medium 46 in real-time, asthe events occur, then the controller 34 can cause the diagnosticinformation to be uploaded to the external memory medium 46 based ondifferent triggers. For example, the controller 34 can start to recordthe diagnostic information to the external memory medium 46 as soon as acommunication link has been established between the external memorymedium 46 and the controller 34. Alternatively, the controller 34 canstart to record the diagnostic information to the external memory medium46 on the basis of instructions to upload the diagnostic informationreceived from a human operator via the control panel 32.

The processing unit 40 of the controller 34 can start recordingdiagnostic information to the external memory medium 46, in real-time,on the basis of a program element stored in its program instructions 48,and possibly, on the basis of instructions received from a user via thecontrol panel. In such an embodiment, the external memory medium 46 actssimply as a memory storage device, and does not include any executableprogram instructions or processing capability built in.

Alternatively, upon detection of the external memory medium 46 at theinterface 44, the processing unit 40 can access a program element, suchas an autoexec file, that is stored in the external memory medium 46 forcausing the controller 34 to start recording the diagnostic informationassociated with the operation of the set of bathing unit components tothe external memory medium 46. In such an embodiment, it should beappreciated that although the external memory medium 46 does in factinclude a program element, the processing functionality is stillperformed at the controller 34.

In accordance with the present invention, all processing required fortransferring or recording the diagnostic information to the externalmemory medium 46 is performed at the controller 34. The external memorymedium 46 simply needs to be connected either directly, or indirectly,to the interface 44 of the controller 34, such that the controller 34can cause the diagnostic information to be transferred, or recorded tothe external memory medium 34.

Business Method

As mentioned throughout the application, the processing that is done inorder to either update or configure a controller 34 based on informationstored on an external memory medium 46 is done entirely at thecontroller 34. This processing can be done on the basis of program logicstored at the controller 34 or basis of program logic stored at theexternal memory medium 46, but the processing itself is done at thecontroller 34. This processing can be done entirely by the controller34, or can be done at least in part on the basis of instructionsreceived from a human operator via a control panel 32 or an externaldevice other than the external memory medium 46, such as a PDA, acomputer hard-drive or a cell phone, among other possibilities.

Given that the processing is performed entirely at the controller 34, itcan be appreciated that by simply providing a user, owner or distributorof the bathing unit system 10 with an external memory medium 46containing the appropriate information (i.e. either update informationor configuration information) the controller 34 can be easily updatedand/or configured by the user, owner or distributor.

Shown in FIG. 6 is a non-limiting example of a method for enabling auser, owner or distributor (hereafter to be referred to as the user) ofa bathing unit system 10 to update and/or configure a bathing unitcontroller 34. Firstly, at step 700, the method involves providing theuser of the bathing unit system 10 with an external memory medium 46that includes the relevancy information 50/update information 52,described with respect to FIG. 3A and/or the configuration information60, described with respect to FIGS. 4A and 4B.

The manner in which the user is provided with an external memory medium46 that includes this relevancy information 50/update information 52and/or configuration information 60 can be done in a variety ofdifferent ways. For example, in the case where the external memorymedium 46 is a memory stick, a CD or a DVD that includes the abovedescribed information, then the external memory medium 46 can beprovided to a user directly by the manufacturer with the purchase thebathing unit controller 34, or via regular snail mail or a courierservice, among other possibilities. Alternatively, the user may not beprovided with the actual physical medium, and may instead be instructedto log onto a website, via the internet, for downloading the relevancyinformation 50/update information 52 and/or the configurationinformation 60. The user can then save this relevancy information50/update information 52 and/or configuration information 60 to thecomputer's hard drive, to a disk, CD, DVD, PDA, cell phone, smart phone,or to a memory stick, among other possibilities. Each of these memorymediums can be considered to be an external memory medium as usedherein. FIG. 7 shows a depiction of an external memory medium 46 beingsent by mail in an envelope 750, and an external memory medium 46attached to a computer hard-drive 752 for receiving downloaded relevancyinformation 50/update information 52 and/or configuration information60. It should be appreciated that the computer hard-drive 752 itselfcould also be considered the external memory medium 46.

It should be appreciated that the user of the bathing unit system 10 maybe provided with the external memory medium 46 containing the abovedescribed information in response to a variety of circumstances. Forexample, an external memory medium 46 containing the relevancyinformation 50 and update information 52 and/or configurationinformation 60 can be provided to the user on the basis of a requestfrom a user. The request may be initiated via a phone call, a writtenrequest, an email request or via a request entered at a website, suchthat the external memory medium 46 can be mailed or sent by courier tothe user. Alternatively, in the case where the user is able to downloadthe relevancy information 50/the update information 52 and/or theconfiguration information 60 from a website, the request may simply comeas a result of clicking on certain buttons on the website.

Alternatively, the external memory medium may not be provided to a useron the basis of a request. Instead, an external memory medium containingrelevancy information 50/update information 52 and/or configurationinformation 60 may be provided to a plurality of users whenever amanufacturer has made an update, or detected a defect in the existingprogram instructions running on most bathing unit controllers 34. Insuch a scenario, the manufacturer may have a list of bathing unit system10 users such that the manufacturer can mass mail an external memorymedium 46 containing the appropriate information to each party in thatlist. Alternatively, this can be done by sending an email to the list ofusers advising them to download the latest update or configuration. Inyet a further alternative, an advisory could be posted on themanufacturer's website advising bathing unit system 10 users that logonto the website to download the latest update or configuration.

Referring back to FIG. 6, at step 702, the method involves providing theuser of the bathing unit system 10 with instructions for enabling theuser to establish a communication link between the external memorymedium 46 and the controller 34 such that the process described abovewith respect to one of FIGS. 3B and 4C can be executed.

This step of providing instructions can be done in a variety ofdifferent manners. For example, in the case where the external memorymedium is provided to the user via mail or courier, the instructions maybe provided to the user via a printed handout that includes writteninstructions or diagrams, either on paper or via an interactive CD forexample. These instructions may provide information on where thecontroller 34 is located, and where interface 44 is located on thecontroller 34. Alternatively, in the case where the user downloads therelevancy information 50 and update information 52 and/or configurationinformation 60 from a website, then the instructions may be provided viaan on-line tutorial that can be accessed from the website. The on-linetutorial may be a video tutorial or an audio tutorial, among otherpossibilities.

As described above, once the actual communication link has beenestablished between the external memory medium 46 and the controller 34,the controller 34 takes over the updating procedure without any furtherinteraction from a user/owner of the bathing unit system.

Business Method for Diagnostic Procedure

Given that the processing involved in transferring or recordingdiagnostic information to the external memory medium 46 is performedalmost entirely at the controller 34, it can be appreciated that thiscan be very simply done by providing a user of the bathing unit system10 with an external memory medium 46 and instructing the user how toestablish the communication link between the controller 34 and theexternal memory medium 46. The user can then easily cause the diagnosticinformation 70 from the controller 34 to be recorded to the externalmemory medium 46, such that the information can then be forwarded to amanufacturer of the bathing unit controller 34 either by mail, courieror the internet. In this manner, the hassle of having to provide themanufacturer with the entire bathing unit controller 34, when somethingmalfunctions, is avoided.

The external memory medium 46 may belong to a user of the bathing unitsystem 10, or may be a specialized external memory medium 46 supplied tothe user of the bathing unit system 10 by the manufacturer of thebathing unit controller 34. The user is also provided with instructionsas to how to establish a communication link between the external memorymedium 46 and the controller 34. This may be done by providing writteninstructions or diagrams, either on paper or via an interactive CD forexample. Alternatively, these instructions can be located on a stickerthat has been positioned in close proximity to where the controller islocated, and where interface 44 is located on the controller 34. In yeta further alternative, the instructions may be provided via an on-linetutorial that can be accessed from the manufacturer's website. Theon-line tutorial may be a video tutorial or an audio tutorial, amongother possibilities.

Once the actual communication link has been established between theexternal memory medium 46 and the controller 34, the controller 34 isable to start transferring the diagnostic information to the externalmemory medium 46 with limited, if any, further interaction required froma user of the bathing unit system 10. Once the diagnostic informationhas been transferred or recorded to the external memory medium 46, thenthe external memory medium can be mailed or couriered to themanufacturer such that they can determine what is wrong with the bathingunit controller 34 or the components 11, 13, 26, 28, 30. Alternatively,the information from the external memory medium 46 can be uploaded tothe Internet such that it can be sent electronically to themanufacturer.

Although the present invention has been described in considerable detailwith reference to certain preferred embodiments thereof, variations andrefinements are possible without departing from the spirit of theinvention. Therefore, the scope of the invention should be limited onlyby the appended claims and their equivalents.

The invention claimed is:
 1. A controller for a bathing unit system,said controller comprising: a) a memory unit storing program codeimplementing a set of bathing unit configurations, said set of bathingunit configurations including at least a first bathing unitconfiguration and a second bathing unit configuration; b) acommunication interface for communicating with external devices; c) aprocessing unit in communication with said communication interface, saidprocessing unit being programmed for: i) accessing an external memorymedium through said communication interface to detect if configurationinformation is stored on the external memory medium; ii) in response todetection of configuration information stored on the external memorymedium: (1) unlocking a specific bathing unit configuration from the setof bathing unit configurations implemented by the program code stored inthe memory unit of the controller at least in part by processing thedetected configuration information; and (2) operating the bathing unitsystem in accordance with the unlocked specific bathing unitconfiguration implemented by the program code stored in the memory unitof the controller.
 2. A controller as defined in claim 1, wherein theprocessing unit is programmed for unlocking the specific bathing unitconfiguration at least in part by processing the configurationinformation detected on the external memory medium to unlock a portionof the program code stored on the memory unit of the controller, wherethe unlocked portion of the program code implements the specific bathingunit configuration.
 3. A controller as defined in claim 1, wherein saidprocessing unit is programmed for: a) operating a first set of bathingunit components when the first bathing unit configuration in the set ofbathing unit configurations is unlocked; and b) operating a second setof bathing unit components when the second bathing unit configuration inthe set of bathing unit configurations is unlocked.
 4. A controller asdefined in claim 3, wherein said second set of bathing unit componentsis a subset of said first set of bathing unit components.
 5. Acontroller as defined in claim 3, wherein said second set of bathingunit components includes at least one bathing unit component absent fromsaid first set of bathing unit components.
 6. A controller as defined inclaim 1, wherein said bathing unit system includes a pump, wherein saidprocessing unit is programmed for: a) controlling operational settingsassociated with the pump in a first manner when the first bathing unitconfiguration in the set of bathing unit configurations is unlocked; andb) controlling operational settings associated with the pump in a secondmanner different from the first manner when the second bathing unitconfiguration in the set of bathing unit configurations is unlocked. 7.A controller as defined in claim 1, wherein said bathing unit systemincludes a bathing unit component selected from the set consisting of apump, a water heater and a water filtration module, wherein saidprocessing unit is programmed for: a) controlling operational settingsassociated with the bathing unit component in a first manner when thefirst bathing unit configuration in the set of bathing unitconfigurations is unlocked; and b) controlling operational settingsassociated with the bathing unit component in a second manner differentfrom the first manner when the second bathing unit configuration in theset of bathing unit configurations is unlocked.
 8. A controller asdefined in claim 1, wherein the detected configuration informationstored on the external memory medium includes an access code associatedwith the specific bathing unit configuration in the set of bathing unitconfigurations.
 9. A controller as defined in claim 1, wherein thedetected configuration information stored on the external memory mediumincludes a program element suitable for being processed by theprocessing unit of the controller for causing the specific bathing unitconfiguration in the set of bathing unit configurations to be unlocked.10. A controller as defined in claim 1, wherein said processing unit isprogrammed for unlocking the specific bathing unit configuration atleast in part by processing: (1) the configuration information detectedon the external memory medium; and (2) a user input.
 11. A controller asdefined in claim 10, wherein said user input includes one of a serialnumber and a password.
 12. A controller as defined in claim 1, whereinsaid communication link is a wireless link.
 13. A controller as definedin claim 1, wherein said communication interface includes a USB port.14. A bathing unit system, comprising: a) a set of bathing unitcomponents including a water heater and a pump; and b) a controllercomprising: i) a memory unit storing program code implementing a set ofbathing unit configurations, said set of bathing unit configurationsincluding at least a first bathing unit configuration and a secondbathing unit configuration; ii) a communication interface forcommunicating with external devices; iii) a processing unit incommunication with said interface, said processing unit being programmedfor: (1) accessing an external memory medium through said communicationinterface to detect if configuration information is stored on theexternal memory medium; (2) in response to detection of configurationinformation stored on the external memory medium: (a) unlocking aspecific bathing unit configuration from the set of bathing unitconfigurations implemented by the program code stored in the memory unitof the controller at least in part by processing the detectedconfiguration information; and (b) operating the set of bathing unitcomponents in accordance with the unlocked specific bathing unitconfiguration implemented by the program code stored in the memory unitof the controller.
 15. A bathing unit system as defined in claim 14,wherein the processing unit is programmed for unlocking the specificbathing unit configuration at least in part by processing theconfiguration information detected on the external memory medium tounlock a portion of the program code stored on the memory unit of thecontroller, where the unlocked portion of the program code implementsthe specific bathing unit configuration.
 16. A bathing unit system asdefined in claim 15, wherein said processing unit is programmed for: a)controlling operational settings associated with the pump in a firstmanner when the first bathing unit configuration in the set of bathingunit configurations is unlocked; and b) controlling operational settingsassociated with the pump in a second manner different from the firstmanner when the second bathing unit configuration in the set of bathingunit configurations is unlocked.
 17. A bathing unit system as defined inclaim 14, wherein said processing unit is programmed for unlocking thespecific bathing unit configuration at least in part by processing: (1)the configuration information detected on the external memory medium;and (2) a user input.
 18. A bathing unit system as defined in claim 17,wherein said user input includes one of a serial number and a password.19. A bathing unit system as defined in claim 14, wherein saidcommunication link is a wireless link.
 20. A bathing unit system asdefined in claim 14, wherein said communication interface includes a USBport configured for engaging a complementary interface associated withthe external memory medium.
 21. A bathing unit system as defined inclaim 14, wherein said processing unit is programmed for: a) operating afirst sub-set of the set of bathing unit components when the firstbathing unit configuration in the set of bathing unit configurations isunlocked; and b) operating a second sub-set of the set of bathing unitcomponents when the second bathing unit configuration in the set ofbathing unit configurations is unlocked.
 22. A bathing unit system asdefined in claim 21, wherein said second sub-set of bathing unitcomponents includes at least one bathing unit component absent from saidfirst sub-set of bathing unit components.
 23. A bathing unit system asdefined in claim 14, wherein said processing unit is programmed for: a)controlling operational settings associated with bathing unit componentsin the set of bathing unit components in a first manner when the firstbathing unit configuration in the set of bathing unit configurations isunlocked; and b) controlling operational settings associated withbathing unit components in the set of bathing unit components in asecond manner different from the first manner when the second bathingunit configuration in the set of bathing unit configurations isunlocked.
 24. A bathing unit system as defined in claim 14, wherein thedetected configuration information stored on the external memory mediumincludes an access code associated with the specific bathing unitconfiguration in the set of bathing unit configurations.
 25. A bathingunit system as defined in claim 14, wherein the detected configurationinformation stored on the external memory medium includes a programelement suitable for being processed by the processing unit of thecontroller for causing the specific bathing unit configuration in theset of bathing unit configurations to be unlocked.
 26. An auxiliarydevice suitable for use with a controller of a bathing unit system, thecontroller comprising a memory unit that stores program codeimplementing a set of bathing unit configurations, said set of bathingunit configurations including at least two bathing unit configurations,said auxiliary device comprising: a) a communication interface forcommunicating with external devices; b) a memory medium storingconfiguration information, said configuration information beingassociated with a specific bathing unit configuration from the set ofbathing unit configurations implemented by the program code stored inthe memory unit of the controller; c) in use, the auxiliary devicecommunicating the configuration information to the controller of thebathing unit system over the communication interface for processing bythe controller to unlock the specific bathing unit configuration fromthe set of bathing unit configurations implemented by the program codestored in the memory unit of the controller.
 27. An auxiliary device asdefined in claim 16, wherein the configuration information stored on thememory medium includes an access code associated with the specificbathing unit configuration in the set of bathing unit configurations.28. An auxiliary device as defined in claim 26, wherein theconfiguration information stored on the memory medium includes a programelement for processing by the controller to unlock the specific bathingunit configuration from the set of bathing unit configurationsimplemented by the program code stored in the memory unit of thecontroller.
 29. An auxiliary device as defined in claim 26, wherein saidcommunication interface includes a USB port.
 30. A method forconfiguring a controller for a bathing unit system, said methodcomprising: a) providing a controller having: i) a memory unit storingprogram code implementing a set of bathing unit configurations, said setof bathing unit configurations including at least two bathing unitconfigurations; ii) a communication interface for communicating withexternal devices; and iii) a processing unit in communication with saidinterface; b) using the processing unit of the controller to access anexternal memory medium through said communication interface to detect ifconfiguration information is stored on the external memory medium; c) inresponse to detection by the processing unit of the controller ofconfiguration information stored on the external memory medium: i) usingthe processing unit to unlock a specific bathing unit configuration fromthe set of bathing unit configurations implemented by the program codestored in the memory unit of the controller at least in part byprocessing the detected configuration information; and ii) using theprocessing unit to operate the bathing unit system in accordance withthe unlocked specific bathing unit configuration.